package com.kun.vo;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils;

import java.util.List;

/**
 * 路由显示信息
 */
@Getter
@Setter
@ToString
@NoArgsConstructor
public class MetaVo {

    /**
     * 设置该路由在侧边栏和面包屑中展示的名字
     */
    private String title;
    private String locale;

    /**
     * 设置该路由访问的权限
     */
    private Boolean requireAuth;

    /**
     * 设置访问角色
     */
    private List<String> roles;

    /**
     * 设置该路由的图标，对应路径src/assets/icons/svg
     */
    private String icon;

    /**
     * 设置为true，则不会被 <keep-alive>缓存
     */
    private boolean noCache;

    /**
     * 内链地址（http(s)://开头）
     */
    private String link;

    /**
     * 排序
     */
    private Integer order;

    public MetaVo(String title, String icon) {
        this.title = title;
        this.icon = icon;
    }

    public MetaVo(String title, String icon, boolean noCache) {
        this.title = title;
        this.icon = icon;
        this.noCache = noCache;
    }

    public MetaVo(String title, String icon, String link) {
        this.title = title;
        this.icon = icon;
        this.link = link;
    }

    public MetaVo(String title, String icon, boolean noCache, String link) {
        this.title = title;
        this.icon = icon;
        this.noCache = noCache;
        if (StringUtils.startsWithAny(link, "http://", "https://")) {
            this.link = link;
        }
    }

    public MetaVo(String locale, Boolean requireAuth, String icon, Integer order) {
        this.locale = locale;
        this.requireAuth = requireAuth;
        this.icon = icon;
        this.order = order;
    }

    public MetaVo(String locale, Boolean requireAuth, List<String> roles) {
        this.locale = locale;
        this.requireAuth = requireAuth;
        this.roles = roles;
    }
}
